// function debounce(fn,delay){
//     return function(...args){
//         let that = this;
//         clearTimeout(fn.id)
//         fn.id = setTimeout(() => {
//             fn.apply(that,args)
//         },delay)
//     }
// }

// 节流
// 1.
// function throttle(fn,delay){
//     let canrun = true;
//     return function(...args) {
//         if(!canrun) return;
//         canrun = false;
//         fn.apply(this,args);
//         setTimeout(() => {
//             bool = true;
//         },delay)
//     }
// }
// 2.
// function throttle(fn, delay) {
//     let last = 0,
//         deferTimer;
//     return function (...args) {
//         let now = Date.now();
//         const time = delay-(now-last);
//         if(time>0) {
//             clearTimeout(deferTimer)
//             deferTimer = setTimeout(() => {
//                 last = now;
//                 fn.apply(this, args)
//             }, time)
//         } else {
//             last = now;
//             fn.apply(this, args)
//         }
//     }
// }
// 3.
function throttle(fn, delay) {
    let curTime = Date.now();
    return function (...args) {
        let nowTime = Date.now();
        if(nowTime-curTime>=delay) {
            fn.apply(this, args)
            curTime = Date.now();
        }
    }
}